package com.nightscout;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.nightscout.data.dao.TimeMatechedRecordDao;
import com.turbomanage.storm.TableHelper.Column;
import com.nightscout.data.TimeMatechedRecord;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.util.Log;
public class GetData extends AsyncTask<String, Void, TimeMatechedRecord[]> {
private static final String TAG = GetData.class.getSimpleName();
private Throwable err;
private Context context;
public Throwable error()
{
return err;
}
public GetData()
{
}
public GetData(Context c)
{
this.context = c;
}
@Override
protected TimeMatechedRecord[] doInBackground(String... arg0) {
return getDataFromMLW();
}
public TimeMatechedRecord[] getDataFromMLW() {
try {
Log.d(TAG, "Connected");
TimeMatechedRecordDao dataDao = new TimeMatechedRecordDao(context);
Column[] columns = dataDao.getTableHelper().getColumns();
SQLiteDatabase db = dataDao.getDbHelper(context).getReadableDatabase();
Cursor curs = db.rawQuery("SELECT MAX(_id) from TimeMatechedRecord", null);
long maxTimeIndex = 0;
if(curs.moveToFirst()){
maxTimeIndex = curs.getLong(0);
}
curs.close();
TimeMatechedRecord[] matched = null;
String uri = "mongodb://user:password@server.mongolab.com:53109/datbase_name";
MongoClientURI mongoURI = new MongoClientURI(uri);
MongoClient client = new MongoClient(mongoURI);
// get db
DB mongoDb = client.getDB(mongoURI.getDatabase());
String collectionName = "data_col";
// get collection
DBCollection coll = mongoDb.getCollection(collectionName.trim());
BasicDBObject fields = new BasicDBObject()
.append("date", 1)
.append("_id", 0)
.append("sgv", 1);
BasicDBObject query = new BasicDBObject();
long lastDate = 0;
DBCursor cursor = coll.find(query,fields);
int count = 0;
try {
while(cursor.hasNext()) {
DBObject row = cursor.next();
Long date = (Long) row.get("date")/1000/300;
TimeMatechedRecord cor = new TimeMatechedRecord();
cor.timeIndex = date;
cor.LocalSecondsSinceDexcomEpoch = (Long) row.get("date")/1000;
cor.GlucoseValue = Short.parseShort((String) row.get("sgv"));
// Log.d(TAG,"got point "+date + " "+cor.GlucoseValue);
try {
dataDao.insert(cor);
} catch (Exception e) {
dataDao.update(cor);
}
count++;
}
} finally {
cursor.close();
}
Log.e(TAG,"got data "+count);
this.err =null;
return matched;
} catch (Throwable e) {
Log.e(TAG,"getData "+e.getMessage(),e);
this.err =e;
return null;
} finally {
}
}
}